package com.itshen.innerclass;

/**
 * 外部类
 *
 * @author stephen.shen
 * @email shenzhaoxiang@gmail.com
 * @date 2020-02-24 17:17
 */
public class OuterClass {

    private static String staticInnerClass = "staticInnerClass";
    private String memberInnerClass = "memberInnerClass";

    /**
     * 静态内部类
     */
    public static class StaticInnerClass {
        // 静态内部类可以定义变量、方法、构造函数

        // 静态内部类可以访问外部类的静态属性和静态方法
        private String getClassName() {
            return staticInnerClass;
        }

        public static void main(String[] args) {
            OuterClass.StaticInnerClass staticInnerClass = new OuterClass.StaticInnerClass();
            System.out.println(staticInnerClass.getClassName());
        }
    }

    /**
     * 成员内部类
     */
    public class MemberInnerClass{
        // 成员内部类可以访问外部类的属性和方法
        // 成员内部类不可以定义静态的属性和方法

        public void print(){
            System.out.println(staticInnerClass);
            System.out.println(memberInnerClass);
        }
    }
}
